// *** LICENSE HEADER ***
// Filename: ./messageviewer.h
// This file is part of Nodewarz 0.1
// Nodewarz is a 3d OpenGL strategy game
// Copyright (C) 2007 CZestmyr
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
// *** END LICENSE HEADER ***
#ifndef NODEWARS_MESSAGE_VIEWER
#define NODEWARS_MESSAGE_VIEWER

#include "GL/gl.h"
#include "definitions.h"
#include "helperfunctions.h"

class fonts;

//Views the ingame (and roster) messages on the screen
class messageViewer{
    public:
        messageViewer(int messageNum = _MESSAGEVIEWER_NUMBER);
        ~messageViewer();

        //Set, whether the messages should dissappear automatically
        void SetTimeout(bool doTimeout);
        //Set the maximum displayed message number
        void SetMessageNumber(int num);
        //Set the top coordinate of the message viewer
        void SetTop(int newTop);

        //Add another message to the viewer
        void AddMessage(const char* message);

        //Update function
        void Update(int dt);
        //Draw the message viewer
        void Draw(fonts* fontDrawer);
    private:
        //Deletes the message time array and message buffer array
        void DeleteArrays();
        //Allocates the arrays anew
        void AllocArrays(int messageNum);
        //Shifts the messages so that the oldest one dissappears
        void ShiftMessages();

        //Internal flags and variables
        bool timeout;
        int top;
        int num;

        //Internal arrays
        char** messages;
        int* times;
};

#include "fonts.h"

#endif
